/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package forms;

import beans.Enseignant;
import beans.Etudiant;
import beans.Secretaire;
import beans.Utilisateur;
import com.sun.istack.internal.logging.Logger;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Miren
 */
public class ConnectionForm {
    private static final String CHAMP_USERNAME  = "username";
    private static final String CHAMP_PASS   = "pass";
    
    String url = "jdbc:oracle:thin:@localhost:1521:XE";
    String login = "SYSTEM";
    String password = "miren";
    
    public Utilisateur checkUtilisateur(HttpServletRequest request) throws SQLException, IOException{
        //chargement du driver
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        }
        catch (ClassNotFoundException cnfe) {
            System.out.println("driver introuvable");
            cnfe.printStackTrace();
        }
        //connection à la base
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, login, password);
        }
        catch (SQLException sqle) {
            System.out.println("Erreur SQL : ");
            sqle.printStackTrace();
        }
        //création de l'instruction et exécution
        Statement instruction = conn.createStatement();
        
        //test si l'utilisateur est un enseignant
        String req = "SELECT * FROM Enseignant e WHERE e.username='" 
                        + getValeurChamp(request, CHAMP_USERNAME) + "' AND e.password='" 
                        + getValeurChamp(request, CHAMP_PASS) + "'" ;        
        ResultSet rs = instruction.executeQuery(req);
        //parcours du résultat
        while(rs.next()){
            Utilisateur utilisateur = new Enseignant();
            String nom = rs.getString("nom_ens") ;
            utilisateur.setNom(nom);
            String prenom = rs.getString("prenom_ens") ;
            utilisateur.setPrenom(prenom);
            return utilisateur;
        }
        /*
        //test si l'utilisateur est une secretaire
        req = "SELECT * FROM Secretaire s WHERE s.username='" 
                        + getValeurChamp(request, CHAMP_USERNAME) + "' AND s.password='" 
                        + getValeurChamp(request, CHAMP_PASS) + "'" ;        
        rs = instruction.executeQuery(req);
        //parcours du résultat
        while(rs.next()){
            Utilisateur utilisateur = new Secretaire();
            String nom = rs.getString("nom_sec") ;
            utilisateur.setNom(nom);
            String prenom = rs.getString("prenom_sec") ;
            utilisateur.setPrenom(prenom);
            return utilisateur;
        }
        
        //test si l'utilisateur est un etudiant
        req = "SELECT * FROM Etudiant e WHERE e.username='" 
                        + getValeurChamp(request, CHAMP_USERNAME) + "' AND e.password='" 
                        + getValeurChamp(request, CHAMP_PASS) + "'" ;        
        rs = instruction.executeQuery(req);
        //parcours du résultat
        while(rs.next()){
            Utilisateur utilisateur = new Etudiant();
            String nom = rs.getString("nom_etud") ;
            utilisateur.setNom(nom);
            String prenom = rs.getString("prenom_etud") ;
            utilisateur.setPrenom(prenom);
            return utilisateur;
        }
        */
        return null;
    }
    
    /*
    * Méthode utilitaire qui retourne null si un champ est vide, et son contenu
    * sinon.
    */
    private static String getValeurChamp( HttpServletRequest request, String nomChamp ) {
        String valeur = request.getParameter( nomChamp );
        if ( valeur == null || valeur.trim().length() == 0 ) {
            return null;
        } else {
            return valeur.trim();
        }
    }
}
